<?php 
/** 
 * 第一个只出现一次的字符
 * 在一个字符串(0<=字符串长度<=10000，全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1（需要区分大小写）.
 * 方法：使用hash表
 * php 中数组是通过hash表和双向链表实现的
 */
function FirstNotRepeatingChar($str)
{
    $hashTable = [];
    $length = strlen($str);
    for ($i=0; $i < $length; $i++) { 
    	if (isset($hashTable[$str[$i]])) {
    		$hashTable[$str[$i]]++;
    	} else {
    		$hashTable[$str[$i]] = 1;
    	}
    }
    for ($i=0; $i < $length; $i++) { 
    	if ($hashTable[$str[$i]] == 1) {
    		return $i;
    	}
    }
    
    return -1;
}


$str = 'asrawedsadqwexzdcxqdwedasdszcasdfawerascawefasdfl';
var_dump(FirstNotRepeatingChar($str));
